--- 战斗主类
---
--- @class FightUsingSkill
FightUsingSkill = ClientFight.CreateClass("FightUsingSkill")
local FightUsingSkill = FightUsingSkill

--- @public
--- @return FightUsingSkill
function FightUsingSkill:ctor(team, site)


    self.HurtCorrectFactor = "HurtCorrectFactor";

    --唯一ID*/
    ---@type number
    self.skillUniqueId = 0;
    --* 技能帧数 技能已经执行了多少帧*/
    ---@type number
    self.frame = 0;
    -- 跳过帧数(技能黑屏) */
    ---@type number
    self.skipFrame = 0;
    -- 战斗 */
    ---@type Fight
    self.fight = nil;
    -- 技能特殊的 飞行起始点 */
    ---@type Fighter
    self.flyBegin = nil;

    -- 攻击者 */
    ---@type Fighter
    self.fighter = nil;
    -- 指向目标 */
    ---@type Fighter
    self.target = nil;
    -- 指向坐标 */
    ---@type Vector2
    self.targetPosition = nil
    -- 技能抬手时, 目标所在的那个地点的 坐标 , 有些技能后续选目标时,以这个点为中心点*/
    ---@type Vector2
    self.originalTargetPlacePosition = nil
    -- 技能首次结算时, 目标所在位置的 坐标 , 有些技能后续选目标时,以这个点为中心点*/
    ---@type Vector2
    self.firstEffectPlacePosition = nil
    --[[ 指向方向(主要用于按方向类的移动技能等)
    *  -1向左， 1向右 */]]
    ---@type number
    self. targetDirection = 1;
    -- 是否分离技能 */
    ---@type number
    self.separate = false;
    -- 速度 */
    ---@type number
    self.speed = 0;
    -- 移动速度(每帧) */
    ---@type number
    self.moveSpeed = 0;
    --按帧移动 多少帧移动到某个点*/
    ---@type number
    self. moveFrame = 0;
    -- 技能坐标 */
    ---@type Vector2
    self.position = nil
    -- 技能起始坐标 */
    self. startPosition = nil
    ---@type Vector2
    -- 实际碰撞目标 */
    --- @type table<number,Fighter>
    self.collideTargets = {};
    -- 实际作用目标 */
    --- @type table<number,Fighter>
    self.actionTargets = {};
    -- 技能 */
    ---@type FightSkill
    self.skill = nil;
    -- 父技能 */
    ---@type FightUsingSkill
    self.parentSkill = nil;
    -- 技能形状 */
    ---@type Rectangle2
    self.skillShape = nil;
    -- 使用阶段 */
    ---@type FightSkillStageEnum
    self.stage = nil;
    -- 阶段开始帧数 */
    ---@type number
    self. stageFinishFrame = 0;
    --[[
    * BUFF触发帧数（触发增加BUFF）
    * <触发帧数,<buffId,buff层数>>
    * */]]
    ---@type table<number,table>
    self.triggerBuffFrames = {};
    -- 技能触发帧数（触发其他技能） */
    self.triggerFrames = {};
    --[[
    * 技能作用帧数
    * 伤害计算前把buff加上
    * */]]
    ---@type table<number,table<number,SkillEffectAction>>
    self.actionFrames = {};
    --[[
* 技能作用唯一id
* 效果同上 主要用于触发帧事件
* */]]
    ---@type table<number,table<number,SkillEffectAction>>
    self.actionUniqueId = {};

    --[[
    * 技能创建召唤物
    * key:帧
    * */]]
    ---@type table<number,SkillCreateSummonAction>
    self. createSummonFrames = {};

    -- 排除目标 */
    ---@type table<number,boolean>
    self.excludes = {};

    -- 单次释放技能攻击过的目标 */
    ---@type table<number,boolean>
    self.attackedTargets = {};
    -- 技能执行参数 */
    ---@type table<number,number>
    self.parameters = {}
    -- 作用次数 */
    ---@type number
    self. effectTimes = 0;
    -- 当前技能绑定的资源在技能结束后删除
    ---@type table<number,SpineEffect>
    self.SpineEffects = {}
    -- 飞出界了
    ---@type boolean
    self.out = false;
    ----------------------------------------------------------


end
function FightUsingSkill:getSkillModelId()
    return self.skill.skillBean.f_SkillID;
end


--[[
* 放入列表 准备召唤
*/]]
function FightUsingSkill:addSummonFrames(summonAction, triggerFrame)
    self.createSummonFrames[triggerFrame] = summonAction;
end

function FightUsingSkill:toString()
    return "Skill" .. self.skill.skillId .. "[" .. self.sskillUniqueId .. "]";
end